首先来看这个方法:
|
|
下面这个是常见的 init
创建线程:
|
|
这两种创建方式有哪些不同呢?我们对比来看下:
init
是一个构造器,detachNewThreadSelector
是一个类型方法。detachNewThreadSelector
返回值是void
,也就是说没有返回值。detachNewThreadSelector
在调用后立即启动,不需要start
方法。
下面我们来使用这个方法,在 TouchesBegan
方法中写入:
|
|
创建 run
方法:
|
|
现在我们就可以调用这个线程了。
detachNewThread
这个类型方法没有返回值,这意味着我们不能像使用 init
构造器创建那样,使用start
exit
name
stackSize
那样控制线程启动、关闭、命名、获取栈大小,也无法使用 currentThread
mainThread
isMainThread
threadPriority
进行获取当前线程、获取主线程、指定优先级等操作。
最后一种方法是 selectorInBackground
,从名字可以看出来,这是在在后台执行一个相应函数,与 deathNewThread
和 init
不同,selectorInbackground
是 Object
的实例方法,没有返回值,因此它同样不能对线程进行控制。这个方法的表达式如下:
|
|
通过上面的对比,我们可以得出结论,同 init
这种方式对比,detachNewThread
和 performSelectorBackgroud
无法对创建的线程进行命名、比较、设定优先级等操作。